package itheima02;
/*
    java.lang.ThreadLocal<T>类
    作用: 实现线程共享局部变量
    内部使用Map集合,Map集合有2个泛型,K: 键的类型,V代表值的类型
    ThreadLocal<T>类: 只有一个泛型,代表的是值的类型,内部把键的类型已经规定为了Thread,使用当前线程对象,作为键的值
    所以ThreadLocal<T>类,泛型T表示的是给当前线程对象,绑定的值的类型
    成员方法:
        public void set(T t): 给当前线程对象,绑定一个T类型的变量t
        相当于Map集合:
        map.put(Thread.currentThread,t)

        public T get(): 获取当前线程对象上,绑定的值
        相当于Map集合:
        map.get(Thread.currentThread)

        public T remove(): 删除当前线程对象上绑定的值
        相当于Map集合:
        map.remove(Thread.currentThread)
 */
public class Demo02ThreadLocal {
    public static void main(String[] args) {
        //创建ThreadLocal对象
        ThreadLocal<String> tl = new ThreadLocal<>();

        //获取当前线程绑定的值: 以当前main线程作为键,获取绑定的值
        String s = tl.get();
        System.out.println(s);//null

        //给当前main线程,绑定值"hello Threadlocal"
        tl.set("hello Threadlocal");

        s = tl.get();
        System.out.println(s);//hello Threadlocal

        //创建SubThread类的对象
        SubThread st = new SubThread(tl);

        //开启线程
        st.start();

    }
}
